//
//  HSMessageController.swift
//  HomeSchoolDemo
//
//  Created by 张晓林 on 16/9/26.
//  Copyright © 2016年 张晓林. All rights reserved.
//

import UIKit
/*
    表格视图的性能优化（性能调优）
    1.所有的图片不要使用原生的裁剪圆角模式
    2.尽量不要使用透明设置
    3.所有参数提前准备好，在需要的时候直接获取使用
    4.包括视图尽量不要使用延时加载，都提前准备好
 */
class HSMessageController: HSBasicController {
    
    // 消息列表视图模型
    let messageListVM = HSMessListViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // 注册原形cell
        tableView.register(UINib(nibName: "HSMessageCell", bundle: nil), forCellReuseIdentifier: "messageCell")
        tableView.estimatedRowHeight = 200
        tableView.rowHeight = UITableViewAutomaticDimension
        
        // 添加右边添加消息按钮
        let rightBtn = UIBarButtonItem(imageName: "release_msg_nor", bgImgName: "release_msg_press", target: self, action: #selector(rightBtnClicked))
        navigationItem.rightBarButtonItem = rightBtn
        // 加载数据
        loadData()
    }
    
    /// 右边按钮的监听回调
    @objc fileprivate func rightBtnClicked() {
        let releseVc = HSReleaseInfoController()
        // 隐藏标签栏
        releseVc.hidesBottomBarWhenPushed = true
        navigationController?.pushViewController(releseVc, animated: true)
    }
    
    // 加载数据
    override func loadData() {
        refreshC.beginRefreshing()
        // 获得刷新类型
        let loType = isPull ? MessageLoadType.pull : MessageLoadType.drap
        // 请求数据
        messageListVM.requestMessage(loadType: loType) { [weak self] (err, isRefresh) in
            // 关闭刷新控件
            self?.refreshC.endRefreshing()
            // 记录刷新状态
            self?.isPull = false
            // 判断是否刷新视图
            if err != nil {
                return
            }
            if isRefresh {
                // 刷新视图
                self?.tableView.reloadData()
            }
        }
    }
}

// MARK: - Table view data source
extension HSMessageController {
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return messageListVM.messages.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell", for: indexPath) as! HSMessageCell
        // 设置选中模式
        cell.selectionStyle = .none
        // 获得对应的视图模型
        let messageVM = messageListVM.messages[indexPath.row]
        // 传递模型给cell
        cell.messageVM = messageVM

        return cell
    }
    
}







